#ifndef ___CONVERSIONES_NUMEROS

#define ___CONVERSIONES_NUMEROS 1

#include <stddef.h>

unsigned long long convertir_desde_binario(void *, unsigned char);
void convertir_a_binario(void *, unsigned long long, unsigned char);

unsigned long long convertir_desde_binario (void * buffer, unsigned char longitud) {
  char * origen = buffer;
  if (!longitud) return 0;
  if (((int) longitud) > sizeof(unsigned long long)) return -1;
  unsigned long long resultado = 0;
  unsigned long long temp;
  unsigned char pos;
  for (pos = 0; pos < longitud; pos ++) {
    temp = origen[pos];
    temp <<= 8 * pos;
    resultado |= temp;
  }
  return resultado;
}

void convertir_a_binario (void * buffer, unsigned long long numero, unsigned char longitud) {
  char * resultado = buffer;
  unsigned char pos;
  if (!longitud) return;
  if (((int) longitud) > sizeof(unsigned long long)) return;
  for (pos = 0; pos < longitud; pos ++) {
    resultado[pos] = numero & 255;
    numero >>= 8;
  }
}

#endif
